﻿#pragma once
#include <string>
namespace adas
{
    struct Pose {
        int x;
        int y;
        char heading;
    };
    class Executor
    {
    public:
        static Executor* NewExecutor(const Pose& pose={0,0,'N'}) noexcept;
    public:
        Executor(void) = default;
        virtual ~Executor(void) = default;
        Executor(const Executor&) = delete;
        Executor& operator=(const Executor&) = delete;//初始化Executor类的多种函数声明
    public:
        virtual void Execute(const std::string& command) noexcept = 0;//外界输入接收纯虚函数
        virtual Pose Query(void) const noexcept = 0;//状态读取纯虚函数
    };
}